Garbage collection for storage devices can be resource-intensive, particularly for systems big-data systems that move gigabytes and even terabytes of data daily. Optimization of garbage-collection methods can free resources to perform more complex computing tasks. EP 2315126 to Fukushima teaches a garbage collection program that uses an append-only file system in flash memory that aims to reduce the number of writing times to a main memory. Fukushima appends data to the flash memory, but only copies necessary data from the flash memory to the main memory, and then deletes the entirety of the flash memory. Constantly deleting and wiping the flash memory for each garbage collection process, however, takes time. In addition, transfer of data from a flash memory to the main memory, requires data to be transferred via the main memory bus multiple times, once from the processor to the flash memory and another time from the flash memory to the main memory.
U.S. Pat. No. 9,342,260 to Schuette teaches methods for rapidly writing data to NAND flash media by virtualizing all of the address blocks on the media. Data blocks on the memory are virtualized and placed in an over-provisioning pool that always contains un-used blocks. Writes to Schuette's system are sent to an append-only memory space, such that blocks are dynamically assigned to either a user accessible pool or a pool of spare blocks, and user-accessible blocks are cycled into the user memory. Schuette's system, however, requires a great deal of resources to keep track of the virtualized blocks and switching, which can only be performed by the main computer processor, requiring multiple virtualization handshaking commands to be transmitted between the main computer processor and the NAND memory to maintain Schuette's different block pools.
Therefore, there is a need for improved garbage collection systems and methods to minimize total use of system resources.